package basis.netease.medium;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 7-6 最小数
 * 给定一组非0整数 nums，重新排列每个数的顺序（每个数不可拆分）使之组成一个最小的整数。
 * 注意：
 * 输入整数数组中，可能存在负数，但最多只会有一个负数
 * 输出结果可能非常小，所以你需要返回一个字符串而不是整数。
 * 输入格式:
 * 一个整数数组，每个元素其间以“空格”分隔
 * 输出格式:
 * 最小数的字符串
 * 输入样例1:
 * 在这里给出一组输入。例如：
 * 10 2
 * 输出样例1:
 * 在这里给出相应的输出。例如：
 * 102
 * 输入样例2:
 * 在这里给出一组输入。例如：
 * 3 30 34 5 -9
 * 输出样例2:
 * 在这里给出相应的输出。例如：
 * -9534330
 */
public class Main_6 {
    public static String minNumber(String[] nums) {
        Integer min = Integer.parseInt(nums[0]);
        StringBuilder result = new StringBuilder();
        result.append(min);
        if (min < 0) {
            for (int i = nums.length - 1; i > 0; i--) {
                result.append(nums[i]);
            }
        } else {
            for (int i = 1; i < nums.length; i++) {
                result.append(nums[i]);
            }
        }
        return result.toString();
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] nums = scanner.nextLine().split(" ");
        Arrays.sort(nums, (a, b) -> (a + "" + b).compareTo(b + "" + a));
        System.out.println(minNumber(nums));
    }

}
